#ifndef LOGGER_H
#define LOGGER_H

#include <QString>
#include "../core.h"

NAMESPACE_BEGIN

enum log_levels
{
    LOG_LEVEL_DEBUG,
    LOG_LEVEL_TRACE,
    LOG_LEVEL_INFO,
    LOG_LEVEL_WARN,
    LOG_LEVEL_ERROR,
    LOG_LEVEL_FIXED,
};

class JET_API_EXPORT Logger
{
public:
    Logger();
    static void SetGlobalLogger(Logger * logger);

public:
    static void LogInfo(const QString &information);
    static void LogFixed(const QString &information);

    virtual void Log(log_levels level, const std::string &information);
    virtual void Log(log_levels level, const std::string &information, const std::string &prefix) = 0;

private:
    static Logger *_globalLogger;
};

NAMESPACE_END

#endif // LOGGER_H
